import pdfkit
import os
from PyPDF2 import PdfFileMerger
import shutil

def setDir(filepath):
    '''
    如果文件夹不存在就创建，如果文件存在就清空！
    :param filepath:需要创建的文件夹路径
    :return:
    '''
    if not os.path.exists(filepath):
        os.mkdir(filepath)
    else:
        shutil.rmtree(filepath)
        os.mkdir(filepath)

# 根据字典输出单个PDF
def pdf_out(single_data):

    # 设置纸张大小
    config = {'page-width':70,'page-height':50,'encoding': "UTF-8"}
    # 打印pdf

    # 循环打印
    for i in range(1, single_data['print_count']+1):
        pdf_data = """
<meta charset="UTF-8">
单号： %s<br>
品号： %s<br>
数量： %d/%d<br>
        """ % (single_data['billNo'],single_data['MB001'],single_data['single_num'],single_data['total_num'])

        print(pdf_data)
        file_name = 'temp/single/%d.pdf' % (single_data['single_num']+i)

        print(file_name)
        pdfkit.from_string(str(pdf_data),file_name,options=config)


# 合并PDF
def pdf_connect(input_puth,out_file):
    pdf_lst = [f for f in os.listdir(input_puth) if f.endswith('.pdf')]

    # 进行排序
    pdf_lst.sort(key=lambda x: int(x[:-4]))
    pdf_lst = [os.path.join(input_puth, filename) for filename in pdf_lst]


    file_merger = PdfFileMerger()
    for pdf in pdf_lst:
        file_merger.append(pdf)     # 合并pdf文件

    file_merger.write(out_file)
    setDir('temp/single')




#循环打印并合并 PDF
def pdf_print(data_print):
    # 遍历打印数据
    for single_data in data_print:
        pdf_out(single_data)

    pdf_connect('temp/single','static/print.pdf')